package com.yict.csms.system.service;

import java.util.Collection;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;

import com.yict.common.service.IBaseService;
import com.yict.csms.system.dao.IProfessionDao;
import com.yict.csms.system.entity.Profession;

public interface IProfessionService extends IBaseService<Profession,Long,IProfessionDao> {
	/**
	 * 批量提交
	 * @param ids
	 * @return
	 * @throws Exception
	 */
	public boolean submit(Long[] ids) throws Exception;
	
	/**
	 * 查询某个公司在指定日期有合同的工种
	 * @param companyid 公司主键
	 * @param contractDate 合同日期
	 * @return
	 */
	public List<Profession> queryByCompany(Long companyid,Date contractDate);
	
	/**
	 * 
	 * @param t
	 * @param parentId 计费时需要分解的工种主键，该工种在计费时将被分解为本工种及其他parentId相同的工种进行计费
	 * @return
	 * @throws Exception
	 */
	public boolean save(Profession t,Long parentId) throws Exception;

	/**
	 * 
	 * @param t
	 * @param parentId 计费时需要分解的工种主键，该工种在计费时将被分解为本工种及其他parentId相同的工种进行计费
	 * @return
	 * @throws Exception
	 */
	public boolean update(Profession t,Long parentId) throws Exception;
	
	/**
	 * 根据id查找实体
	 * @param ids
	 * @return
	 */
	public List<Profession> listByIds(Collection<Long> ids);
	
	/**
	 * 查询由合同在有效期内的工种
	 * 列表查询界面
	 */
	public List<Profession> listByType(Long companyid,Date contractDate,String type);

	/**
	 * 计费工种下拉Map
	 * @param profecode	null表示已计费
	 * @return
	 */
	public	LinkedHashMap<String, String> getProfessionSelectMap(String profecode);
}
